home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 21 / AMIGAplus Sonderheft 21 (1999)(ICP)(DE)[!].iso / PublicDomain / Anwendungen / uuepro / uuepro.spot < prev   
Text File  |  1999-08-23  |  8KB  |  290 lines

  1. /* uuencode pro 3.9 by RDC */
  2.  
  3. firstnum=0
  4. mode='lines=120'
  5. addmode='header="" checksum filetime'
  6. origin='uuencode pro 3.9 / AmigaOS'
  7.  
  8. cr='0d'x
  9. options results
  10. options failat 21
  11. address SPOT
  12. call addlib('rexxsupport.library',0,-30)
  13. call delay(1)
  14. 'isarealist'
  15. if rc=0 then do
  16.  'requestarea title "Select area for uuencoding"'
  17.  if rc=0 then do
  18.   'gotoarea 'result
  19.   'messages'
  20.  end
  21.  else exit
  22. end
  23. else do
  24.  'getnummsgs'
  25.  if result>0 then do
  26.   'ismessages'
  27.   if rc=0 then do
  28.    'requestresponse title "Select choice" prompt "Reply current message in netmail?" gadgets "Reply|Post to area|Cancel"'
  29.    if rc=0 then exit
  30.    if rc=1 then do
  31.     replymode=''
  32.     firstnum=0
  33.    end
  34.   end
  35.  end
  36. end
  37. file=''
  38. cancel=0
  39. do while file=''
  40.  address SPOT
  41.  'requestfile TITLE "Select file for uuencoding" PATH "sys:"'
  42.  if rc=5 then exit
  43.  file=result
  44.  filepart=lastpos('/',file)
  45.  if filepart=0 then filepart=pos(':',file)
  46.  filepart=delstr(file,1,filepart)
  47.  address command
  48.  'uuepro "'file'" >t:uuencoded testvalues 'mode' 'addmode
  49.  if rc>0 then do
  50.   address SPOT
  51.   call open(tempfile,'t:uuencoded','R')
  52.   'requestresponse title "Error" prompt "'readln(tempfile)'" gadgets "Select another|Cancel"'
  53.   call close(tempfile)
  54.   if rc=0 then exit
  55.   file=''
  56.  end
  57. end
  58. state=statef(file)
  59. do while newvalue~='selected'
  60.  call open(tempfile,'t:uuencoded','R')
  61.  sections=readln(tempfile)
  62.  lines=readln(tempfile)
  63.  bytes=readln(tempfile)
  64.  name=readln(tempfile)
  65.  call close(tempfile)
  66.  newvalue=''
  67.  do while newvalue=''
  68.   address SPOT
  69.   'requestresponse center title "Section size" prompt "total uuencode sections = 'sections||CR'uuencode lines per message = 'lines||CR'average bytes per message = 'bytes||CR||CR'Start uuencoding or change?" gadgets "Ok|Sections|Lines|Bytes"'
  70.   if rc~=1 then do
  71.    if rc=0 then newmode='bytes'
  72.    if rc=2 then newmode='sections'
  73.    if rc=3 then newmode='lines'
  74.    'requestnumber title "New value" prompt "Enter new number of 'newmode'"'
  75.    if rc=0 then do
  76.     newvalue=result
  77.     address command
  78.     'uuepro "'file'" >t:uuencoded testvalues 'newmode'='newvalue' 'addmode
  79.     if rc=0 then mode=newmode'='newvalue
  80.     else do
  81.      address SPOT
  82.      call open(tempfile,'t:uuencoded','R')
  83.      'requestnotify title "Error" prompt "'readln(tempfile)'"'
  84.      call close(tempfile)
  85.      newvalue=''
  86.     end
  87.    end
  88.   end
  89.   else newvalue='selected'
  90.  end
  91. end
  92. if firstnum~='0' then firstnum=1
  93. lastnum=sections
  94. do while newnumber~='selected'
  95.  totalnum=lastnum-firstnum+1
  96.  if firstnum=0 then totalnum=totalnum-1
  97.  address SPOT
  98.  'requestresponse center title "Posting interval and name" prompt "'totalnum' sections of 'sections' will be posted'CR'(from 'firstnum' to 'lastnum')'CR'filename = 'name||CR||CR'Start uuencoding or change?" gadgets "Ok|First|Last|Name"'
  99.  if rc~=1 then select
  100.   when rc=2 then do
  101.    'requestnumber title "New value" prompt "Enter first section number"'
  102.    if rc=0 then if result>=0 then if result<=lastnum then firstnum=result
  103.   end
  104.   when rc=3 then do
  105.    'requestnumber title "New value" prompt "Enter last section number"'
  106.    if rc=0 then
  107.     if result>=firstnum then
  108.      if result<=sections then lastnum=result
  109.   end
  110.   when rc=0 then do
  111.    'requeststring title "New name" prompt "Enter new name" default "'name'"'
  112.    if rc=0 then name=result
  113.   end
  114.  end
  115.  else newnumber='selected'
  116. end
  117. section=0
  118. do while length(sections)>length(section)
  119.  section='0'section
  120. end
  121. if firstnum>0 then do
  122.  address command
  123.  'echo >t:uuencoded_info'
  124. end
  125. else nosig=''
  126. address SPOT
  127. if replymode='' then do
  128.  if firstnum=0 then do
  129.   'matrixreply 'nosig' noedit nogui subject "'filepart'"'
  130.  end
  131.  else do
  132.   'matrixreply file t:uuencoded_info 'nosig' noedit nogui subject "'filepart'"'
  133.  end
  134.  if rc=0 then do
  135.   'arealist'
  136.   'gotomatrixarea'
  137.  end
  138. end
  139. else do
  140.  if firstnum=0 then do
  141.   call open(tempfile,'t:uuencoded_info','W')
  142.   comment=delword(state,1,7)
  143.   mins=word(state,6)
  144.   hours=trunc(mins/60)
  145.   mins=mins-hours*60
  146.   secs=trunc(word(state,7)/50)
  147.   if length(secs)=1 then secs='0'secs
  148.   if length(mins)=1 then mins='0'mins
  149.   if length(hours)=1 then hours='0'hours
  150.   call writeln(tempfile,'----------------- cut here -----------------')
  151.   call writeln(tempfile,'           file name = 'name)
  152.   size='bytes'
  153.   bytesize=word(state,2)
  154.   if bytesize>1023 then size='('trunc(bytesize/1024)' Kb)'
  155.   if bytesize>1048575 then size='('trunc(bytesize/1048576)' Mb)'
  156.   call writeln(tempfile,'           file size = 'bytesize size)
  157.   call writeln(tempfile,'        access flags = 'word(state,4))
  158.   if comment~='' then do
  159.    if pos('http://',comment)=1 then url=''
  160.    if pos('ftp://',comment)=1 then url=''
  161.    if pos('ftp.',comment)=1 then url=''
  162.    if pos('www.',comment)=1 then url=''
  163.    if url='' then
  164.     call writeln(tempfile,'          source URL = 'comment)
  165.    else
  166.     call writeln(tempfile,'        file comment = 'comment)
  167.   end
  168.   call writeln(tempfile,'       creation date = 'date('N',word(state,5),'I'))
  169.   call writeln(tempfile,'       creation time = 'hours':'mins':'secs)
  170.   call writeln(tempfile,'            sections = 'sections)
  171.   call writeln(tempfile,'      section length = 'lines' lines')
  172.   size=trunc((bytes-1)/1024)+1
  173.   call writeln(tempfile,'        message size = 'size' Kb')
  174.   bytesize=size*totalnum
  175.   if bytesize>1023 then size=trunc(bytesize/1024)' Mb'
  176.   else size=trunc(bytesize)' Kb'
  177.   call writeln(tempfile,' total uuencode size = 'size)
  178.   call writeln(tempfile,'----------------- cut here -----------------')
  179.   call writeln(tempfile,'')
  180.   call close(tempfile)
  181.   readme=file
  182.   point=1
  183.   do while point>0
  184.    if exists(readme'.readme') then do
  185.     if word(statef(readme'.readme'),1)='FILE' then do
  186.      if file~=readme'.readme' then do
  187.       address command
  188.       'copy >nil: "'readme'.readme" to t:uuencoded_readme'
  189.       if rc=0 then do
  190.        'xUP >nil: t:uuencoded_readme'
  191.        'rename >nil: t:uuencoded_info t:uuencoded_tmp'
  192.        'join >nil: t:uuencoded_tmp t:uuencoded_readme as t:uuencoded_info'
  193.       end
  194.       break
  195.      end
  196.     end
  197.    end
  198.    point=lastpos('.',readme)
  199.    if point>0 then readme=left(readme,point-1)
  200.   end
  201.  end
  202.  address SPOT
  203.  'write 'nosig' noedit nogui file t:uuencoded_info subject "'filepart'"'
  204. end
  205. if rc=0 then do
  206.  'messages'
  207.  'purgebuffers'
  208.  'lastmessage'
  209.  if firstnum=0 then
  210.   'edit'
  211.  else
  212.   'editheader'
  213.  if rc=0 then do
  214.   'getfrom'
  215.   from=result
  216.   'getfromadrress'
  217.   fromaddr=result
  218.   'getto'
  219.   to=result
  220.   'gettoaddress'
  221.   toaddr=result
  222.   'getsubject'
  223.   subject=' 'strip(delstr(result,1,pos(']',result)))
  224.   if firstnum>0 then
  225.    'deletemessage noreq'
  226.   else do
  227.    'edit nogui noedit subject "['section'/'sections']'subject'" noreq'
  228.    'getkludge MSGID:'
  229.    kludge=result
  230.    firstnum=1
  231.   end
  232.   drop nosig
  233.   if replymode~='' then nosig=''
  234.   'progressopen title "uuencoding in progress..." prompt " "'
  235.   req=result
  236.   timesum=0
  237.   progressections=lastnum-firstnum+1
  238.   do section=firstnum to lastnum
  239.    do while length(sections)>length(section)
  240.     section='0'section
  241.    end
  242.    lastkludge=kludge
  243.    do while kludge=lastkludge
  244.     time=time(e)
  245.     if time<1 then call delay(50-delstr(time,1,2)/2)
  246.     timesum=timesum+time(e)
  247.     call time(r)
  248.     address command
  249.     'uuepro "'file'" >t:uuencoded_err to t:uuencoded_file name="'name'" section='section' 'mode' 'addmode
  250.     address SPOT
  251.     if rc>0 then do
  252.      call open(tempfile,'t:uuencoded_err','R')
  253.      'requestnotify title "Error" prompt "'readln(tempfile)'"'
  254.      call close(tempfile)
  255.      section=sections
  256.     end
  257.     else do
  258.      'write file t:uuencoded_file noedit 'nosig' nogui reflow=off subject "['section'/'sections']'subject'" from "'from'" fromaddr "'fromaddr'" to "'to'" toaddr "'toaddr'" origin "'origin'"'
  259.      if rc=0 then do
  260.       'lastmessage'
  261.       'getkludge MSGID:'
  262.       kludge=result
  263.       if kludge=lastkludge then 'deletemessage noreq'
  264.      end
  265.      else section=sections
  266.     end
  267.    end
  268.    timetogo=''
  269.    progressection=section-firstnum+1
  270.    secs=trunc((lastnum-section)*timesum/progressection)
  271.    mins=trunc(secs/60)
  272.    secs=secs-mins*60
  273.    hours=trunc(mins/60)
  274.    mins=mins-hours*60
  275.    if hours>0 then timetogo=hours' hour '
  276.    if mins>0 then timetogo=timetogo||mins' min '
  277.    if secs>0 then timetogo=timetogo||secs' sec '
  278.    'progressupdate 'req' 'progressection' 'progressections' prompt "Estimated time 'timetogo'to go"'
  279.    if rc>0 then section=sections
  280.   end
  281.   'progressclose 'req
  282.  end
  283.  else do
  284.   'deletemessage noreq'
  285.  end
  286. end
  287. address command
  288. 'delete t:uuencoded#? quiet'
  289. exit
  290.